home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-03-24 | 24.1 KB | 579 lines | [TEXT/MPS ] |
- {••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••}
- {• MIDI SHARE •}
- {•------------------------------------------------------------------------------•}
- {• MIDISHARE est un module logiciel conçu spécialement pour permettre le fonc- •}
- {• tionnement et le développement d'applications Midi dans un contexte multi- •}
- {• tâches et temps réel. •}
- {• •}
- {• MIDISHARE prend en charge la plupart des problèmes spécifiques liés au déve- •}
- {• loppement d'applications Midi: gestion des flux Midi, gestion du temps, •}
- {• gestion des tâches. En outre, MIDISHARE permet le fonctionnement simultané •}
- {• sous Multi-Finder de ces applications, ainsi que l'établissement de connec- •}
- {• tions Midi virtuelles entre celles-ci. •}
- {• •}
- {• Le présent fichier décrit les points d'entrée de MIDISHARE, ainsi que les •}
- {• structures de données et les constantes utilisées. Le code MIDISHARE propre- •}
- {• ment dit est contenu dans le fichier MidiShareI, une INIT qui doit être pla- •}
- {• cée dans le dossier Système. Au démarrage de la machine, ce code est chargé •}
- {• en mémoire et il est "ancré" au vecteur $B8. Toutes les fonctions et les •}
- {• procédures définies ici se servent de cette "ancre" pour accéder au code. •}
- {•------------------------------------------------------------------------------•}
- {• © GRAME 1989/90, Yann Orlarey et Hervé Lequay •}
- {••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••}
-
-
- UNIT MIDIShareUnit;
-
-
-
- INTERFACE
-
- uses MemTypes;
-
- Const
-
- (********************************************************************************)
- (* TYPES D'EVENEMENTS *)
- (*------------------------------------------------------------------------------*)
- (* Constantes définissant les types d'événements manipulés par MidiShare. Cette *)
- (* typologie inclue bien entendu les différents types Midi, mais aussi d'au- *)
- (* tres catégories d'événements, en particulier les Notes, les Streams, les *)
- (* Process et les types privés. Ces codes sont à utiliser entre autre avec la *)
- (* fonction NewMidiEv. *)
- (********************************************************************************)
-
- typeNote = 0; { note avec hauteur, vélocité et durée en ms }
-
- typeKeyOn = 1; { Note On avec hauteur et vélocité }
- typeKeyOff = 2; { Note Off avec hauteur et vélocité }
- typeKeyPress = 3; { Poly KeyPress avec hauteur et pression }
- typeCtrlChange = 4; { Control Change avec controleur et valeur }
- typeProgChange = 5; { Program Change avec numéro de programme }
- typeChanPress = 6; { Channel Pressure avec pression }
- typePitchWheel = 7; { Pitch Wheel Change avec LSB et MSB }
-
- typeSongPos = 8; { Song Position Pointer avec LSB et MSB }
- typeSongSel = 9; { Song Select avec numéro de song }
- typeClock = 10; { Timing Clock }
- typeStart = 11; { Start }
- typeContinue = 12; { Continue }
- typeStop = 13; { Stop }
-
- typeTune = 14; { Tune Request }
- typeActiveSens = 15; { Active Sensing }
- typeReset = 16; { System Reset }
-
- typeSysEx = 17; { System Exclusive de longueur variable }
- typeStream = 18; { Flot Midi quelconque de longueur variable }
-
- typePrivate = 19; {19..127} { Evénement privé à usage libre pour l'appl }
- typeProcess = 128; { Evénement privé servant au MidiTask }
- typeDProcess = 129; { Evénement privé servant au MidiDTask }
-
- typeQuarterFrame= 130; { MTC quarter frame }
- typeCtrl14b = 131; { Controlleur 14-bits }
- typeNonRegParam = 132; { Non Registred Parameter }
- typeRegParam = 133; { Registred Parameter }
-
- typeSeqNum = 134; { numéro de séquence }
- typeText = 135; { événement texte }
- typeCopyright = 136; { message copyright }
- typeSeqName = 137; { nom de séquence ou de piste }
- typeInstrName = 138; { nom d'instrument }
- typeLyric = 139; { paroles déstinées à etre chantées }
- typeMarker = 140; { marqueur }
- typeCuePoint = 141; { cue point }
- typeChanPrefix = 142; { Midi Channel Prefix }
- typeEndTrack = 143; { fin de piste }
- typeTempo = 144; { changement de tempo }
- typeSMPTEOffset = 145; { offset smpte }
-
- typeTimeSign = 146; { indication de mesure }
- typeKeySign = 147; { signature tonale }
- typeSpecific = 148; { méta evt spécifique à un séquenceur }
-
- typeReserved = 149; {149..254} { Codes réservés pour un usage futur }
-
- typeDead = 255; { Evénement privé invalidé }
-
-
-
- (********************************************************************************)
- (* CODES MIDI *)
- (*------------------------------------------------------------------------------*)
- (* Constantes définissant les codes de statut Midi. *)
- (********************************************************************************)
-
- NoteOff = $80;
- NoteOn = $90;
- PolyTouch = $a0;
- ControlChg = $b0;
- ProgramChg = $c0;
- AfterTouch = $d0;
- PitchBend = $e0;
- SysRealTime = $f0;
- SysEx = $f0;
- UnDef1 = $f1;
- SongPos = $f2;
- SongSel = $f3;
- UnDef2 = $f4;
- UnDef3 = $f5;
- Tune = $f6;
- EndSysX = $f7;
- MClock = $f8;
- UnDef4 = $f9;
- MStart = $fa;
- MCont = $fb;
- MStop = $fc;
- UnDef5 = $fd;
- ActSense = $fe;
- MReset = $ff;
-
-
- (********************************************************************************)
- (* PORTS MIDI *)
- (*------------------------------------------------------------------------------*)
- (* Constantes définissant les ports Modem et printer. *)
- (********************************************************************************)
-
- ModemPort = 0;
- PrinterPort = 1;
-
-
- (********************************************************************************)
- (* CODES D'ERREURS *)
- (*------------------------------------------------------------------------------*)
- (* Constantes définissant les codes d'erreurs renvoyés par certaines fonctions *)
- (* MidiShare. *)
- (********************************************************************************)
-
- MIDIerrSpace = -1; { plus de place dans la freeList ou trop d'applications }
- MIDIerrRefNum = -2; { mauvais numéro de reference }
- MIDIerrBadType = -3; { mauvais type d'événement }
- MIDIerrIndex = -4; { mauvais index d'accès à un événement }
-
-
- (*******************************************************************************)
- (* SYNCHRONISATION CODES *)
- (*-----------------------------------------------------------------------------*)
- (* List of the error codes returned by some MidiShare functions. *)
- (*******************************************************************************)
-
- MIDISyncExternal = $8000; { bit-15 for external synchronisation }
- MIDISyncAnyPort = $4000; { bit-14 for synchronisation on any port}
-
-
- (********************************************************************************)
- (* CODES D'APPLICATIONS *)
- (*------------------------------------------------------------------------------*)
- (* Constantes définissant les codes de modification du statut des applications. *)
- (* Codes utilisés pour signaler à une application toute modification survenue *)
- (* aux autres applications ( ouverture, fermeture, connexion/deconnexion...) *)
- (* Ce code est toujours fourni avec le numéro de référence de l'application *)
- (* modifiée sous la forme d'un longint : $RRRRCCCC (R=refNum, C=code) *)
- (********************************************************************************)
-
- MIDIOpenAppl = 1; { ouverture d'une application }
- MIDICloseAppl = 2; { fermeture d'une application }
- MIDIChgName = 3; { changement de nom d'une application }
- MIDIChgConnect = 4; { modification d'une connexion }
- MIDIOpenModem = 5; { ouverture du port Modem }
- MIDICloseModem = 6; { fermeture du port Modem }
- MIDIOpenPrinter = 7; { ouverture du port Printer }
- MIDIClosePrinter= 8; { fermeture du port Printer }
- MIDISyncStart = 9; { début synchronisation }
- MIDISyncStop = 10; { fin synchronisation }
- MIDIChangeSync = 11; { changement mode de synchronisation }
-
-
- (********************************************************************************)
- (* STRUCTURES DES EVENEMENTS *)
- (*------------------------------------------------------------------------------*)
- (* Tous les événements sont construits à l'aide d'une ou plusieurs cellules de *)
- (* taille fixe (16 octets). La plupart nécessitent une seule cellule. D'autres *)
- (* comme les System Exclusive nécessitent plusieurs cellules chaînées. *)
- (********************************************************************************)
-
- Type
- MidiSEXPtr = ^TMidiSEX;
- TMidiSEX = packed record { cellule d'extension d'un sysEx }
- link: MidiSEXPtr; { lien de chaînage suivante }
- data: PACKED ARRAY[0..11] { 12 octets de données }
- of byte;
- end;
-
- MidiSTPtr = ^TMidiST;
- TMidiST = packed record { Cellule d'extension d'un Private }
- ptr1: ptr; { 4 pointeurs utilisables }
- ptr2: ptr; { librement par les applications }
- ptr3: ptr;
- ptr4: ptr;
- end;
-
- MidiEvPtr = ^TMidiEv;
- TMidiEv = packed record { Cellule de base commune à tous }
- link: MidiEvPtr; { lien de chaînage à usage interne}
- date: longint; { date de l'événement en ms }
- evType: byte; { type de l'événement }
- refNum: byte; { refNum de l'appl propriétaire }
- Port: byte; { port Midi (modem ou printer) }
- Chan: byte; { canal Midi }
- case integer of
-
- typeNote:
- (pitch: byte; { hauteur Midi }
- vel: byte; { vélocité Midi }
- dur: integer); { durée note en ms }
-
- typeKeyOn {..typeReset}:
- (data: PACKED ARRAY[0..3]
- OF byte); { octets de données Midi }
-
- typeSysEx {..typeStream}:
- (linkSE: MidiSEXPtr);{ pointeur cellule d'extension }
-
- typePrivate {..typeProcess}:
- (linkST: MidiSTPtr); { pointeur cellule d'extension }
-
- typeDead:
- (unused : longint);
- end;
-
- MidiSeqPtr = ^TMidiSeq;
- TMidiSeq = record { en tête de séquence }
- first: MidiEvPtr; { premier événement de la seq }
- last: MidiEvPtr; { dernier événement de la seq }
- undef1: ptr;
- undef2: ptr;
- end;
-
- FilterPtr = ^TFilter;
- TFilter = record { filtre d'une application }
- port: packed array [0..255] of boolean; { les ports Midi acceptés }
- evType: packed array [0..255] of boolean; { les type d'événements acceptés }
- channel: packed array [0..15] of boolean; { les canaux Midi acceptés }
- unused: packed array [0..15] of boolean;
- end;
-
- MidiName = string[31]; { Nom d'une application MidiShare (32 octets) }
- MidiNamePtr = ^MidiName;
-
- SyncInfoPtr = ^TSyncInfo;
- TSyncInfo = record
- time: longint;
- reenter: longint;
- syncMode: integer;
- syncLocked: byte;
- syncPort: byte;
- syncStart: longint;
- syncStop: longint;
- syncOffset: longint;
- syncSpeed: longint;
- syncBreaks: longint;
- syncFormat: integer;
- end;
-
- SmpteLocPtr = ^TSmpteLocation;
- TSmpteLocation = record
- format: integer;
- hours: integer;
- minutes: integer;
- seconds: integer;
- frames: integer;
- fracs: integer;
- end;
-
-
-
-
- (********************************************************************************)
- (* PROCEDURES PASSEES A MIDISHARE *)
- (*------------------------------------------------------------------------------*)
- (* Définition des procédures passées en arguments à MidiShare pour : les alar- *)
- (* mes de réception, les alarmes de contexte, les tâches et le traitement des *)
- (* séquences. *)
- (********************************************************************************)
-
- Type
- RcvAlarmPtr = ProcPtr; { Procedure MyRcvAlarm( refNum:integer ) }
- ApplAlarmPtr= ProcPtr; { Procedure MyApplAlarm( refNum:integer; code:longint ) }
- TaskPtr = ProcPtr; { Procedure MyTask( date:longint; refNum:integer; a1,a2,a3:longint )}
- ApplyProcPtr= ProcPtr; { Procedure MyApplyProcPtr( e:MidiEvPtr ) }
-
- (********************************************************************************)
- (* POINTS D'ENTREE *)
- (*------------------------------------------------------------------------------*)
- (* Définition de tous les points d'entrée de MidiShare. Ceux-ci sont implémentés*)
- (* par un InLine correspondant à : *)
- (* *)
- (* moveq #nn, d0 *)
- (* move.l $B8, a0 *)
- (* jsr (a0) *)
- (* *)
- (* où nn est le numéro routine MidiShare appelée,et où $B8 (vecteur du trap 14 *)
- (* en principe inutilisé) est le point d'ancrage de MidiShare et contient *)
- (* l'adresse d'une routine de dispatch qui réalise l'appel effectif de la *)
- (* fonction. Le vecteur $B8 est initialisé au chargement par MidiShareInit. *)
- (********************************************************************************)
-
-
- PROCEDURE MidiShareSpecialInit; Inline $7037, $2078, $00B8, $4E90;
- { Initialisation de MidiShare au chargement. A NE PAS UTILISER PAR LES APPLI }
-
- {------------------}
-
- FUNCTION MidiGetVersion : integer; Inline $7000, $2078, $00B8, $4E90;
- { Donne le numéro de version de MidiShare. Ex: pour V1.03 donne 103 }
-
- {------------------}
-
- FUNCTION MidiCountAppls : integer; Inline $7001, $2078, $00B8, $4E90;
- { Donne le nombre d'applications sous MidiShare actives }
-
- FUNCTION MidiGetIndAppl (index: integer) : integer; Inline $7002, $2078, $00B8, $4E90;
- { Donne le refNum de la Nième application }
-
- FUNCTION MidiGetNamedAppl (name: midiName) : integer; Inline $7003, $2078, $00B8, $4E90;
- { Donne le refNum d'une application à partir de son nom }
-
- {------------------}
-
- PROCEDURE MidiGetSyncInfo (p: SyncInfoPtr); Inline $7038, $2078, $00B8, $4E90;
- { Donne des informations sur l'état de la synchronisation }
-
- PROCEDURE MidiSetSyncMode (mode: integer); Inline $7039, $2078, $00B8, $4E90;
- { Permet de configurer la synchronisation }
-
- FUNCTION MidiGetExtTime : longint; Inline $703D, $2078, $00B8, $4E90;
- { Donne le temps exterieur : celui de la synchro }
-
- FUNCTION MidiInt2ExtTime (time: longint) : longint; Inline $703E, $2078, $00B8, $4E90;
- { Convertit le temps interne (celui de MidiShare) en temps externe (celui de la synchro) }
-
- FUNCTION MidiExt2IntTime (time: longint) : longint; Inline $703F, $2078, $00B8, $4E90;
- { Convertit le temps externe (celui de la synchro) en temps interne (celui de MidiShare) }
-
- PROCEDURE MidiTime2Smpte (time: longint; format: integer; loc: SmpteLocPtr); Inline $7040, $2078, $00B8, $4E90;
- { Convertit un temps exprimé en millisecondes en une location SMPTE dont le format est fournis en paramètre }
-
- FUNCTION MidiSmpte2Time (loc: SmpteLocPtr): longint; Inline $7041, $2078, $00B8, $4E90;
- {convertit une location SMPTE en un temps exprimé en millisecondes }
-
-
- FUNCTION MidiGetTimeAddr : ptr; Inline $7042, $2078, $00B8, $4E90;
- {donne l'adresse de la date MidiShare }
-
- {------------------}
-
- FUNCTION MidiOpen (applName: midiName): integer; Inline $7004, $2078, $00B8, $4E90;
- { Ouvre une application et lui donne un nom, renvoie le refNum }
-
- PROCEDURE MidiClose (refNum: integer); Inline $7005, $2078, $00B8, $4E90;
- { Ferme une application }
-
- {------------------}
-
- FUNCTION MidiGetName (refNum: integer): MidiNamePtr; Inline $7006, $2078, $00B8, $4E90;
- { Donne le nom d'une application }
-
- PROCEDURE MidiSetName (refNum: integer; applName: MidiName); Inline $7007, $2078, $00B8, $4E90;
- { Change le nom d'une application }
-
- FUNCTION MidiGetInfo (refNum: integer): ptr; Inline $7008, $2078, $00B8, $4E90;
- { Donne une Handle associé préalablement à l'application }
-
- PROCEDURE MidiSetInfo (refNum: integer; InfoZone: ptr); Inline $7009, $2078, $00B8, $4E90;
- { Associe une Handle à l'application }
-
- FUNCTION MidiGetFilter (refNum: integer): FilterPtr; Inline $700A, $2078, $00B8, $4E90;
- { Donne le filtre associé à une application }
-
- PROCEDURE MidiSetFilter (refNum: integer; filter: FilterPtr); Inline $700B, $2078, $00B8, $4E90;
- { Associe un filtre à une application }
-
- FUNCTION MidiGetRcvAlarm (refNum: integer): RcvAlarmPtr; Inline $700C, $2078, $00B8, $4E90;
- { Donne l'alarme de réception associée à une application }
-
- PROCEDURE MidiSetRcvAlarm (refNum: integer; alarm: RcvAlarmPtr); Inline $700D, $2078, $00B8, $4E90;
- { Associe une alarme de réception à une application }
-
- FUNCTION MidiGetApplAlarm (refNum: integer): ApplAlarmPtr; Inline $700E, $2078, $00B8, $4E90;
- { Donne l'alarme de modification associée à une application }
-
- PROCEDURE MidiSetApplAlarm (refNum: integer; alarm: ApplAlarmPtr); Inline $700F, $2078, $00B8, $4E90;
- { Associe une alarme de modification à une application }
-
- {------------------}
-
- PROCEDURE MidiConnect (src,dest: integer; state: boolean); Inline $7010, $2078, $00B8, $4E90;
- { connecte ou deconnecte deux applications }
-
- FUNCTION MidiIsConnected (src,dest: integer) : boolean; Inline $7011, $2078, $00B8, $4E90;
- { teste la connexion entre deux applications }
-
- {------------------}
-
- FUNCTION MidiGetPortState (port: integer): boolean; Inline $7012, $2078, $00B8, $4E90;
- { Donne l'état d'un port Midi, ouvert(true) ou fermé (false) }
-
- PROCEDURE MidiSetPortState (port: integer; state: boolean); Inline $7013, $2078, $00B8, $4E90;
- { Ouvre (true) ou ferme (false) un port Midi }
-
- {------------------}
-
- FUNCTION MidiFreeSpace: longint; Inline $7014, $2078, $00B8, $4E90;
- { Donne le nombre de cellules restantes }
-
- {------------------}
-
- FUNCTION MidiNewEv (typeNum: integer): MidiEvPtr; Inline $7015, $2078, $00B8, $4E90;
- { Alloue un événement du type souhaité }
-
- FUNCTION MidiCopyEv (e: MidiEvPtr): MidiEvPtr; Inline $7016, $2078, $00B8, $4E90;
- { Copie un événement }
-
- PROCEDURE MidiFreeEv (e: MidiEvPtr); Inline $7017, $2078, $00B8, $4E90;
- { Désalloue un événement }
-
- {------------------}
-
- PROCEDURE OldMidiSetField (e: MidiEvPtr; f: integer; v: longint); Inline $7018, $2078, $00B8, $4E90;
- { Change la valeur du Nième champ particulier d'un événement }
-
- FUNCTION OldMidiGetField (e: MidiEvPtr; f: integer): longint; Inline $7019, $2078, $00B8, $4E90;
- { Donne la valeur du Nième champ particulier d'un événement }
-
- FUNCTION OldMidiCountFields (e: MidiEvPtr): integer; Inline $701B, $2078, $00B8, $4E90;
- { Donne le nombre de champs particuliers d'un événement }
-
- PROCEDURE MidiSetField (e: MidiEvPtr; f: longint; v: longint); Inline $703A, $2078, $00B8, $4E90;
- { Change la valeur du Nième champ particulier d'un événement }
-
- FUNCTION MidiGetField (e: MidiEvPtr; f: longint): longint; Inline $703B, $2078, $00B8, $4E90;
- { Donne la valeur du Nième champ particulier d'un événement }
-
- PROCEDURE MidiAddField (e: MidiEvPtr; v: longint); Inline $701A, $2078, $00B8, $4E90;
- { Ajoute un champ particulier en queue d'un événement (SysEx ou Stream)}
-
- FUNCTION MidiCountFields (e: MidiEvPtr): longint; Inline $703C, $2078, $00B8, $4E90;
- { Donne le nombre de champs particuliers d'un événement }
-
- {------------------}
-
- FUNCTION MidiNewSeq : MidiSeqPtr; Inline $701D, $2078, $00B8, $4E90;
- { Donne une nouvelle séquence (vide) }
-
- PROCEDURE MidiAddSeq (s: MidiSeqPtr; e: MidiEvPtr); Inline $701E, $2078, $00B8, $4E90;
- { Ajoute un événement à une séquence }
-
- PROCEDURE MidiFreeSeq (s: MidiSeqPtr); Inline $701F, $2078, $00B8, $4E90;
- { Désalloue la séquence et tous les événements qui s'y trouvent }
-
- PROCEDURE MidiClearSeq (s: MidiSeqPtr); Inline $7020, $2078, $00B8, $4E90;
- { Désalloue tous les événements de la séquence qui devient vide }
-
- PROCEDURE MidiApplySeq (s: MidiSeqPtr; proc: ApplyProcPtr); Inline $7021, $2078, $00B8, $4E90;
- { Applique une procédure à tous les événements d'une séquence }
-
- {------------------}
-
- FUNCTION MidiGetTime : longint; Inline $7022, $2078, $00B8, $4E90;
- { Donne la date courante en millisecondes }
-
- {------------------}
-
- PROCEDURE MidiSendIm (refnum: integer; e: MidiEvPtr); Inline $7023, $2078, $00B8, $4E90;
- { Envoie un événement immédiatement }
-
- PROCEDURE MidiSend (refnum: integer; e: MidiEvPtr); Inline $7024, $2078, $00B8, $4E90;
- { Envoie un événement à la date de son champ date }
-
- PROCEDURE MidiSendAt (refnum: integer; e: MidiEvPtr; d: longint); Inline $7025, $2078, $00B8, $4E90;
- { Envoie un événement à la date d }
-
- {------------------}
-
- FUNCTION MidiCountEvs (refnum: integer): longint; Inline $7026, $2078, $00B8, $4E90;
- { Donne le nombre d'événements en attente dans le fifo de l'appl }
-
- FUNCTION MidiGetEv (refnum: integer): MidiEvPtr; Inline $7027, $2078, $00B8, $4E90;
- { Donne l'événement en tête du fifo et l'enlève du fifo }
-
- FUNCTION MidiAvailEv (refnum: integer): MidiEvPtr; Inline $7028, $2078, $00B8, $4E90;
- { Donne l'événement en tête du fifo, mais le laisse dedans }
-
- PROCEDURE MidiFlushEvs (refnum: integer); Inline $7029, $2078, $00B8, $4E90;
- { Désalloue tous les événements en attente dans le fifo }
-
- {------------------}
-
- FUNCTION MidiReadSync (adrMem: univ ptr): ptr; Inline $702A, $2078, $00B8, $4E90;
- { Lit le contenu d'une adresse et la met à NIL (ininterruptible) }
-
- FUNCTION MidiWriteSync (adrMem: univ ptr; val: univ ptr): ptr; Inline $702B, $2078, $00B8, $4E90;
- { Ecrit le contenu d'une adresse qui n'est pas NIL. Donne l'ancien }
- { contenu. (ininterruptible) }
-
- {------------------}
-
- PROCEDURE MidiCall (proc: TaskPtr; date: longint; refNum: integer; a1, a2, a3: longint);
- Inline $702C, $2078, $00B8, $4E90;
- { Appel la procédure proc à la date date et avec les arguments a1, a2,a3}
-
- {------------------}
- FUNCTION MidiTask (proc: TaskPtr; date: longint; refNum: integer; a1, a2, a3: longint) : MidiEvPtr;
- Inline $702D, $2078, $00B8, $4E90;
- { Appel la procédure proc à la date date et avec les arguments a1, a2,a3}
-
- FUNCTION MidiDTask (proc: TaskPtr; date: longint; refNum: integer; a1, a2, a3: longint) : MidiEvPtr;
- Inline $702E, $2078, $00B8, $4E90;
- { Appel différé à une procédure proc pour la date date et avec les arguments a1, a2,a3}
-
- {------------------}
- PROCEDURE MidiForgetTask (var e: MidiEvPtr); Inline $702F, $2078, $00B8, $4E90;
- { Essaie d'oublier une tâche }
-
- FUNCTION MidiCountDTasks (refnum: integer): longint; Inline $7030, $2078, $00B8, $4E90;
- { Donne le nombre d'événements en attente dans le fifo de l'appl }
-
- PROCEDURE MidiFlushDTasks (refnum: integer); Inline $7031, $2078, $00B8, $4E90;
- { Efface toutes les tâches de l'application en attente }
-
- PROCEDURE MidiExec1DTask (refnum: integer); Inline $7032, $2078, $00B8, $4E90;
- { Execute la prochaine tâches de l'application en attente }
-
- {------------------}
-
- FUNCTION MidiNewCell : MidiEvPtr; Inline $7033, $2078, $00B8, $4E90;
- { Alloue une cellule de base }
-
- PROCEDURE MidiFreeCell (e: MidiEvPtr); Inline $7034, $2078, $00B8, $4E90;
- { Désalloue une cellule de base }
-
- {------------------}
-
- FUNCTION MidiTotalSpace: longint; Inline $7035, $2078, $00B8, $4E90;
- { Retourne le nombre d'événements alloués par MidiShare }
-
- FUNCTION MidiGrowSpace (n: longint) : longint; Inline $7036, $2078, $00B8, $4E90;
- { Augmenter le nb de cell allouées. Retourne le nb effectif. }
-
- {------------------}
-
-
- FUNCTION MidiShare: boolean;
- { Test la présence de MidiShare en mémoire }
-
-
- IMPLEMENTATION
-
- FUNCTION MidiShare: boolean;
- type longPtr = ^longint;
- var anchor: ^longptr;
- begin
- anchor := pointer($B8);
- MidiShare := anchor^^=$D080D080 { signature de MidiShare }
- end;
-
-
- END.